/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.montadora.abc.controller;

import br.com.montadora.abc.dao.FuncionarioDAO;
import br.com.montadora.abc.model.Funcionario;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author Aurelio
 */
@ManagedBean(name = "funcionarioCtrl")
@SessionScoped
public class FuncionarioController {
    private FuncionarioDAO funcionarioDAO;
    private Funcionario funcionario;
    
    public FuncionarioController() {
        funcionarioDAO = FuncionarioDAO.getInstance();
        funcionario = new Funcionario();
    }
    

    public List<Funcionario> listarFuncionarios() {
        List<Funcionario>listaFuncionarios = new ArrayList<Funcionario>();
        try{
            listaFuncionarios = funcionarioDAO.carregarTudoOrdenado(Funcionario.class, "nome");
            return listaFuncionarios;
        }catch(Exception e){
            e.printStackTrace();
            return null;
        }

    }

    public void excluiFuncionario(Funcionario funcionario) {
        try {
            funcionarioDAO.excluir(funcionario);
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Funcionario excluído com sucesso!", null));
        } catch (Exception e) {
            e.printStackTrace();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Ocorreu um erro ao tentar excluir este Funcionario!", null));
        }
    }

    public void salvarFuncionario() {
        try {
            funcionarioDAO.gravar(this.getFuncionario());
            this.setFuncionario(new Funcionario());
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Funcionario salvo com sucesso!", null));
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Ocorreu um erro ao tentar salvar este funcionario!", null));
        }

    }
    
    public void alterarFuncionario(){
        try {
            funcionarioDAO.alterar(this.getFuncionario());
            this.setFuncionario(new Funcionario());
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Funcionario atualizado com sucesso!", null));
            
        } catch (Exception e) {
            e.printStackTrace();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao atualizar o funcionario!!", null));
        }
    }

    /**
     * @return the funcionario
     */
    public Funcionario getFuncionario() {
        return funcionario;
    }

    /**
     * @param funcionario the funcionario to set
     */
    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }


}
